#include "my_db.h"

/*
std::get_if 是 C++ 中用于访问存储在 std::variant 对象中的值的函数模板。
如果 std::variant 持有指定类型或索引位置的值，该函数会返回指向该值的指针；
否则，返回空指针。
此函数可用于安全地检查并访问 std::variant 当前是否持有某个特定类型的值。
*/
using std::get_if;

/**
 * 将ValueType类型的值转换为字符串表示
 * 
 * ValueType是一个变体类型，可以持有不同类型的值
 * 此函数根据ValueType中实际存储的类型，将其转换为相应的字符串表示
 * 
 * @param value ValueType类型的引用，表示要转换的值
 * @return 返回转换后的字符串表示
 */
string to_string(const ValueType& value) {
    // 初始化一个字符数组，用于存储转换后的字符串
    char buffer[256]={}; 
    
    // 检查value是否包含int类型，如果是，则将其转换为字符串，下面同
    if(get_if<int>(&value)!=nullptr){
        sprintf(buffer, "%d", *get_if<int>(&value));
    }
    else if(get_if<float>(&value)!=nullptr){
        sprintf(buffer, "%f", *get_if<float>(&value));
    }
    else if(get_if<double>(&value)!=nullptr){
        sprintf(buffer, "%f", *get_if<double>(&value));
    }
    else if(get_if<string>(&value)!=nullptr){
        sprintf(buffer, "%s", (*get_if<string>(&value)).c_str());
    }
    
    return buffer;
}
